using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._SpatialStatisticsTools._MappingClusters
{
    /// <summary>
    /// <para>Hot Spot Analysis </para>
    /// <para>Given a set of weighted features, identifies statistically significant hot spots and cold spots using the Getis-Ord Gi* statistic.</para>
    /// <para>给定一组加权特征，使用 Getis-Ord Gi* 统计量识别具有统计显著性的热点和冷点。</para>
    /// </summary>    
    [DisplayName("Hot Spot Analysis ")]
    public class HotSpots : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public HotSpots()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_Input_Feature_Class">
        /// <para>Input Feature Class</para>
        /// <para>The feature class for which hot spot analysis will be performed.</para>
        /// <para>将对其执行热点分析的要素类。</para>
        /// </param>
        /// <param name="_Input_Field">
        /// <para>Input Field</para>
        /// <para>The numeric field (number of victims, crime rate, test scores, and so on) to be evaluated.</para>
        /// <para>要评估的数值字段（受害者人数、犯罪率、考试成绩等）。</para>
        /// </param>
        /// <param name="_Output_Feature_Class">
        /// <para>Output Feature Class</para>
        /// <para>The output feature class to receive the z-score and p-value results.</para>
        /// <para>用于接收 z 分数和 p 值结果的输出要素类。</para>
        /// </param>
        /// <param name="_Conceptualization_of_Spatial_Relationships">
        /// <para>Conceptualization of Spatial Relationships</para>
        /// <para><xdoc>
        ///   <para>Specifies how spatial relationships among features will be defined.</para>
        ///   <bulletList>
        ///     <bullet_item>Inverse distance—Nearby neighboring features will have a larger influence on the computations for a target feature than features that are far away.</bullet_item><para/>
        ///     <bullet_item>Inverse distance squared—Same as Inverse distance except that the slope is sharper, so influence will drop off more quickly, and only a target feature's closest neighbors will exert substantial influence on computations for that feature.</bullet_item><para/>
        ///     <bullet_item>Fixed distance band—Each feature will be analyzed within the context of neighboring features. Neighboring features inside the specified critical distance (Distance Band or Threshold Distance) will receive a weight of one and exert influence on computations for the target feature. Neighboring features outside the critical distance will receive a weight of zero and have no influence on a target feature's computations.</bullet_item><para/>
        ///     <bullet_item>Zone of indifference—Features within the specified critical distance (Distance Band or Threshold Distance) of a target feature will receive a weight of one and influence computations for that feature. Once the critical distance is exceeded, weights (and the influence a neighboring feature has on target feature computations) will diminish with distance.</bullet_item><para/>
        ///     <bullet_item>K nearest neighbors—The closest k features will be included in the analysis; k is a specified numeric parameter.</bullet_item><para/>
        ///     <bullet_item>Contiguity edges only—Only neighboring polygon features that share a boundary or overlap will influence computations for the target polygon feature.</bullet_item><para/>
        ///     <bullet_item>Contiguity edges corners—Polygon features that share a boundary, share a node, or overlap will influence computations for the target polygon feature.</bullet_item><para/>
        ///     <bullet_item>Get spatial weights from file—Spatial relationships will be defined by a specified spatial weights file. The path to the spatial weights file is specified by the Weights Matrix File parameter.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定如何定义要素之间的空间关系。</para>
        ///   <bulletList>
        ///     <bullet_item>反距离 - 与远处的要素相比，邻近要素对目标要素的计算影响更大。</bullet_item><para/>
        ///     <bullet_item>反距离平方 - 与反距离相同，只是斜率更锐利，因此影响下降得更快，并且只有目标要素的最近邻域才会对该要素的计算产生重大影响。</bullet_item><para/>
        ///     <bullet_item>固定距离带—将在相邻要素的上下文中分析每个要素。指定临界距离（距离带或阈值距离）内的相邻要素将获得 1 的权重，并对目标要素的计算产生影响。临界距离之外的相邻要素的权重为零，并且对目标要素的计算没有影响。</bullet_item><para/>
        ///     <bullet_item>无差异区域 - 目标要素的指定临界距离（距离带或阈值距离）内的要素将获得 1 的权重，并影响该要素的计算。一旦超过临界距离，权重（以及相邻要素对目标要素计算的影响）将随着距离的增加而减小。</bullet_item><para/>
        ///     <bullet_item>K 最近邻—分析中将包括最接近的 k 个要素;k 是指定的数值参数。</bullet_item><para/>
        ///     <bullet_item>仅限邻接边—只有共享边界或重叠的相邻面要素才会影响目标面要素的计算。</bullet_item><para/>
        ///     <bullet_item>邻接边角 - 共享边界、共享节点或重叠的面要素将影响目标面要素的计算。</bullet_item><para/>
        ///     <bullet_item>从文件中获取空间权重 - 空间关系将由指定的空间权重文件定义。空间权重文件的路径由权重矩阵文件参数指定。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// </param>
        /// <param name="_Distance_Method">
        /// <para>Distance Method</para>
        /// <para><xdoc>
        ///   <para>Specifies how distances will be calculated from each feature to neighboring features.</para>
        ///   <bulletList>
        ///     <bullet_item>Euclidean—The straight-line distance between two points (as the crow flies)</bullet_item><para/>
        ///     <bullet_item>Manhattan—The distance between two points measured along axes at right angles (city block), calculated by summing the (absolute) difference between the x- and y-coordinates</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定如何计算从每个要素到相邻要素的距离。</para>
        ///   <bulletList>
        ///     <bullet_item>欧几里得 - 两点之间的直线距离（乌鸦飞翔时）</bullet_item><para/>
        ///     <bullet_item>曼哈顿 - 沿直角轴（城市街区）测量的两点之间的距离，通过将 x 坐标和 y 坐标之间的（绝对）差求和计算得出</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// </param>
        /// <param name="_Standardization">
        /// <para>Standardization</para>
        /// <para><xdoc>
        ///   <para>Row standardization has no impact on this tool: results from Hot Spot Analysis (the Getis-Ord Gi* statistic) would be identical with or without row standardization. The parameter is disabled; it remains as a tool parameter only to support backward compatibility.</para>
        ///   <bulletList>
        ///     <bullet_item>None—No standardization of spatial weights is applied.</bullet_item><para/>
        ///     <bullet_item>Row—No standardization of spatial weights is applied.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>行标准化对此工具没有影响：热点分析（Getis-Ord Gi* 统计量）的结果在行标准化或不行标准化的情况下都是相同的。该参数处于禁用状态;它仅作为工具参数保留，以支持向后兼容性。</para>
        ///   <bulletList>
        ///     <bullet_item>无 - 不应用空间权重的标准化。</bullet_item><para/>
        ///     <bullet_item>行 - 未应用空间权重的标准化。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// </param>
        public HotSpots(object _Input_Feature_Class, object _Input_Field, object _Output_Feature_Class, _Conceptualization_of_Spatial_Relationships_value _Conceptualization_of_Spatial_Relationships, _Distance_Method_value _Distance_Method, _Standardization_value _Standardization)
        {
            this._Input_Feature_Class = _Input_Feature_Class;
            this._Input_Field = _Input_Field;
            this._Output_Feature_Class = _Output_Feature_Class;
            this._Conceptualization_of_Spatial_Relationships = _Conceptualization_of_Spatial_Relationships;
            this._Distance_Method = _Distance_Method;
            this._Standardization = _Standardization;
        }
        public override string ToolboxName => "Spatial Statistics Tools";

        public override string ToolName => "Hot Spot Analysis ";

        public override string CallName => "stats.HotSpots";

        public override List<string> AcceptEnvironments => ["MResolution", "MTolerance", "XYResolution", "XYTolerance", "ZResolution", "ZTolerance", "geographicTransformations", "outputCoordinateSystem", "outputMFlag", "outputZFlag", "outputZValue", "qualifiedFieldNames", "scratchWorkspace", "workspace"];

        public override object[] ParameterInfo => [_Input_Feature_Class, _Input_Field, _Output_Feature_Class, _Conceptualization_of_Spatial_Relationships.GetGPValue(), _Distance_Method.GetGPValue(), _Standardization.GetGPValue(), _Distance_Band_or_Threshold_Distance, _Self_Potential_Field, _Weights_Matrix_File, _Apply_False_Discovery_Rate__FDR__Correction.GetGPValue(), _Results_Field, _Probability_Field, _Source_ID, _number_of_neighbors];

        /// <summary>
        /// <para>Input Feature Class</para>
        /// <para>The feature class for which hot spot analysis will be performed.</para>
        /// <para>将对其执行热点分析的要素类。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Feature Class")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _Input_Feature_Class { get; set; }


        /// <summary>
        /// <para>Input Field</para>
        /// <para>The numeric field (number of victims, crime rate, test scores, and so on) to be evaluated.</para>
        /// <para>要评估的数值字段（受害者人数、犯罪率、考试成绩等）。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Field")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _Input_Field { get; set; }


        /// <summary>
        /// <para>Output Feature Class</para>
        /// <para>The output feature class to receive the z-score and p-value results.</para>
        /// <para>用于接收 z 分数和 p 值结果的输出要素类。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Feature Class")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _Output_Feature_Class { get; set; }


        /// <summary>
        /// <para>Conceptualization of Spatial Relationships</para>
        /// <para><xdoc>
        ///   <para>Specifies how spatial relationships among features will be defined.</para>
        ///   <bulletList>
        ///     <bullet_item>Inverse distance—Nearby neighboring features will have a larger influence on the computations for a target feature than features that are far away.</bullet_item><para/>
        ///     <bullet_item>Inverse distance squared—Same as Inverse distance except that the slope is sharper, so influence will drop off more quickly, and only a target feature's closest neighbors will exert substantial influence on computations for that feature.</bullet_item><para/>
        ///     <bullet_item>Fixed distance band—Each feature will be analyzed within the context of neighboring features. Neighboring features inside the specified critical distance (Distance Band or Threshold Distance) will receive a weight of one and exert influence on computations for the target feature. Neighboring features outside the critical distance will receive a weight of zero and have no influence on a target feature's computations.</bullet_item><para/>
        ///     <bullet_item>Zone of indifference—Features within the specified critical distance (Distance Band or Threshold Distance) of a target feature will receive a weight of one and influence computations for that feature. Once the critical distance is exceeded, weights (and the influence a neighboring feature has on target feature computations) will diminish with distance.</bullet_item><para/>
        ///     <bullet_item>K nearest neighbors—The closest k features will be included in the analysis; k is a specified numeric parameter.</bullet_item><para/>
        ///     <bullet_item>Contiguity edges only—Only neighboring polygon features that share a boundary or overlap will influence computations for the target polygon feature.</bullet_item><para/>
        ///     <bullet_item>Contiguity edges corners—Polygon features that share a boundary, share a node, or overlap will influence computations for the target polygon feature.</bullet_item><para/>
        ///     <bullet_item>Get spatial weights from file—Spatial relationships will be defined by a specified spatial weights file. The path to the spatial weights file is specified by the Weights Matrix File parameter.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定如何定义要素之间的空间关系。</para>
        ///   <bulletList>
        ///     <bullet_item>反距离 - 与远处的要素相比，邻近要素对目标要素的计算影响更大。</bullet_item><para/>
        ///     <bullet_item>反距离平方 - 与反距离相同，只是斜率更锐利，因此影响下降得更快，并且只有目标要素的最近邻域才会对该要素的计算产生重大影响。</bullet_item><para/>
        ///     <bullet_item>固定距离带—将在相邻要素的上下文中分析每个要素。指定临界距离（距离带或阈值距离）内的相邻要素将获得 1 的权重，并对目标要素的计算产生影响。临界距离之外的相邻要素的权重为零，并且对目标要素的计算没有影响。</bullet_item><para/>
        ///     <bullet_item>无差异区域 - 目标要素的指定临界距离（距离带或阈值距离）内的要素将获得 1 的权重，并影响该要素的计算。一旦超过临界距离，权重（以及相邻要素对目标要素计算的影响）将随着距离的增加而减小。</bullet_item><para/>
        ///     <bullet_item>K 最近邻—分析中将包括最接近的 k 个要素;k 是指定的数值参数。</bullet_item><para/>
        ///     <bullet_item>仅限邻接边—只有共享边界或重叠的相邻面要素才会影响目标面要素的计算。</bullet_item><para/>
        ///     <bullet_item>邻接边角 - 共享边界、共享节点或重叠的面要素将影响目标面要素的计算。</bullet_item><para/>
        ///     <bullet_item>从文件中获取空间权重 - 空间关系将由指定的空间权重文件定义。空间权重文件的路径由权重矩阵文件参数指定。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Conceptualization of Spatial Relationships")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public _Conceptualization_of_Spatial_Relationships_value _Conceptualization_of_Spatial_Relationships { get; set; }

        public enum _Conceptualization_of_Spatial_Relationships_value
        {
            /// <summary>
            /// <para>Inverse distance</para>
            /// <para>Inverse distance—Nearby neighboring features will have a larger influence on the computations for a target feature than features that are far away.</para>
            /// <para>反距离 - 与远处的要素相比，邻近要素对目标要素的计算影响更大。</para>
            /// </summary>
            [Description("Inverse distance")]
            [GPEnumValue("INVERSE_DISTANCE")]
            _INVERSE_DISTANCE,

            /// <summary>
            /// <para>Inverse distance squared</para>
            /// <para>Inverse distance squared—Same as Inverse distance except that the slope is sharper, so influence will drop off more quickly, and only a target feature's closest neighbors will exert substantial influence on computations for that feature.</para>
            /// <para>反距离平方 - 与反距离相同，只是斜率更锐利，因此影响下降得更快，并且只有目标要素的最近邻域才会对该要素的计算产生重大影响。</para>
            /// </summary>
            [Description("Inverse distance squared")]
            [GPEnumValue("INVERSE_DISTANCE_SQUARED")]
            _INVERSE_DISTANCE_SQUARED,

            /// <summary>
            /// <para>Fixed distance band</para>
            /// <para>Fixed distance band—Each feature will be analyzed within the context of neighboring features. Neighboring features inside the specified critical distance (Distance Band or Threshold Distance) will receive a weight of one and exert influence on computations for the target feature. Neighboring features outside the critical distance will receive a weight of zero and have no influence on a target feature's computations.</para>
            /// <para>固定距离带—将在相邻要素的上下文中分析每个要素。指定临界距离（距离带或阈值距离）内的相邻要素将获得 1 的权重，并对目标要素的计算产生影响。临界距离之外的相邻要素的权重为零，并且对目标要素的计算没有影响。</para>
            /// </summary>
            [Description("Fixed distance band")]
            [GPEnumValue("FIXED_DISTANCE_BAND")]
            _FIXED_DISTANCE_BAND,

            /// <summary>
            /// <para>Zone of indifference</para>
            /// <para>Zone of indifference—Features within the specified critical distance (Distance Band or Threshold Distance) of a target feature will receive a weight of one and influence computations for that feature. Once the critical distance is exceeded, weights (and the influence a neighboring feature has on target feature computations) will diminish with distance.</para>
            /// <para>无差异区域 - 目标要素的指定临界距离（距离带或阈值距离）内的要素将获得 1 的权重，并影响该要素的计算。一旦超过临界距离，权重（以及相邻要素对目标要素计算的影响）将随着距离的增加而减小。</para>
            /// </summary>
            [Description("Zone of indifference")]
            [GPEnumValue("ZONE_OF_INDIFFERENCE")]
            _ZONE_OF_INDIFFERENCE,

            /// <summary>
            /// <para>K nearest neighbors</para>
            /// <para>K nearest neighbors—The closest k features will be included in the analysis; k is a specified numeric parameter.</para>
            /// <para>K 最近邻—分析中将包括最接近的 k 个要素;k 是指定的数值参数。</para>
            /// </summary>
            [Description("K nearest neighbors")]
            [GPEnumValue("K_NEAREST_NEIGHBORS")]
            _K_NEAREST_NEIGHBORS,

            /// <summary>
            /// <para>Contiguity edges only</para>
            /// <para>Contiguity edges only—Only neighboring polygon features that share a boundary or overlap will influence computations for the target polygon feature.</para>
            /// <para>仅限邻接边—只有共享边界或重叠的相邻面要素才会影响目标面要素的计算。</para>
            /// </summary>
            [Description("Contiguity edges only")]
            [GPEnumValue("CONTIGUITY_EDGES_ONLY")]
            _CONTIGUITY_EDGES_ONLY,

            /// <summary>
            /// <para>Contiguity edges corners</para>
            /// <para>Contiguity edges corners—Polygon features that share a boundary, share a node, or overlap will influence computations for the target polygon feature.</para>
            /// <para>邻接边角 - 共享边界、共享节点或重叠的面要素将影响目标面要素的计算。</para>
            /// </summary>
            [Description("Contiguity edges corners")]
            [GPEnumValue("CONTIGUITY_EDGES_CORNERS")]
            _CONTIGUITY_EDGES_CORNERS,

            /// <summary>
            /// <para>Get spatial weights from file</para>
            /// <para>Get spatial weights from file—Spatial relationships will be defined by a specified spatial weights file. The path to the spatial weights file is specified by the Weights Matrix File parameter.</para>
            /// <para>从文件中获取空间权重 - 空间关系将由指定的空间权重文件定义。空间权重文件的路径由权重矩阵文件参数指定。</para>
            /// </summary>
            [Description("Get spatial weights from file")]
            [GPEnumValue("GET_SPATIAL_WEIGHTS_FROM_FILE")]
            _GET_SPATIAL_WEIGHTS_FROM_FILE,

        }

        /// <summary>
        /// <para>Distance Method</para>
        /// <para><xdoc>
        ///   <para>Specifies how distances will be calculated from each feature to neighboring features.</para>
        ///   <bulletList>
        ///     <bullet_item>Euclidean—The straight-line distance between two points (as the crow flies)</bullet_item><para/>
        ///     <bullet_item>Manhattan—The distance between two points measured along axes at right angles (city block), calculated by summing the (absolute) difference between the x- and y-coordinates</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定如何计算从每个要素到相邻要素的距离。</para>
        ///   <bulletList>
        ///     <bullet_item>欧几里得 - 两点之间的直线距离（乌鸦飞翔时）</bullet_item><para/>
        ///     <bullet_item>曼哈顿 - 沿直角轴（城市街区）测量的两点之间的距离，通过将 x 坐标和 y 坐标之间的（绝对）差求和计算得出</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Distance Method")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public _Distance_Method_value _Distance_Method { get; set; }

        public enum _Distance_Method_value
        {
            /// <summary>
            /// <para>Euclidean</para>
            /// <para>Euclidean—The straight-line distance between two points (as the crow flies)</para>
            /// <para>欧几里得 - 两点之间的直线距离（乌鸦飞翔时）</para>
            /// </summary>
            [Description("Euclidean")]
            [GPEnumValue("EUCLIDEAN_DISTANCE")]
            _EUCLIDEAN_DISTANCE,

            /// <summary>
            /// <para>Manhattan</para>
            /// <para>Manhattan—The distance between two points measured along axes at right angles (city block), calculated by summing the (absolute) difference between the x- and y-coordinates</para>
            /// <para>曼哈顿 - 沿直角轴（城市街区）测量的两点之间的距离，通过将 x 坐标和 y 坐标之间的（绝对）差求和计算得出</para>
            /// </summary>
            [Description("Manhattan")]
            [GPEnumValue("MANHATTAN_DISTANCE")]
            _MANHATTAN_DISTANCE,

        }

        /// <summary>
        /// <para>Standardization</para>
        /// <para><xdoc>
        ///   <para>Row standardization has no impact on this tool: results from Hot Spot Analysis (the Getis-Ord Gi* statistic) would be identical with or without row standardization. The parameter is disabled; it remains as a tool parameter only to support backward compatibility.</para>
        ///   <bulletList>
        ///     <bullet_item>None—No standardization of spatial weights is applied.</bullet_item><para/>
        ///     <bullet_item>Row—No standardization of spatial weights is applied.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>行标准化对此工具没有影响：热点分析（Getis-Ord Gi* 统计量）的结果在行标准化或不行标准化的情况下都是相同的。该参数处于禁用状态;它仅作为工具参数保留，以支持向后兼容性。</para>
        ///   <bulletList>
        ///     <bullet_item>无 - 不应用空间权重的标准化。</bullet_item><para/>
        ///     <bullet_item>行 - 未应用空间权重的标准化。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Standardization")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public _Standardization_value _Standardization { get; set; }

        public enum _Standardization_value
        {
            /// <summary>
            /// <para>None</para>
            /// <para>None—No standardization of spatial weights is applied.</para>
            /// <para>无 - 不应用空间权重的标准化。</para>
            /// </summary>
            [Description("None")]
            [GPEnumValue("NONE")]
            _NONE,

            /// <summary>
            /// <para>Row</para>
            /// <para>Row—No standardization of spatial weights is applied.</para>
            /// <para>行 - 未应用空间权重的标准化。</para>
            /// </summary>
            [Description("Row")]
            [GPEnumValue("ROW")]
            _ROW,

        }

        /// <summary>
        /// <para>Distance Band or Threshold Distance</para>
        /// <para><xdoc>
        ///   <para>Specifies a cutoff distance for the inverse distance and fixed distance options. Features outside the specified cutoff for a target feature will be ignored in analyses for that feature. However, for Zone of indifference, the influence of features outside the given distance will be reduced with distance, while those inside the distance threshold will be equally considered. The distance value entered should match that of the output coordinate system.</para>
        ///   <para>For the inverse distance conceptualizations of spatial relationships, a value of 0 indicates that no threshold distance will be applied; when this parameter is left blank, a default threshold value will be computed and applied. The default value is the Euclidean distance, which ensures that every feature has at least one neighbor.</para>
        ///   <para>This parameter has no effect when polygon contiguity (Contiguity edges only or Contiguity edges corners) or Get spatial weights from file spatial conceptualization is selected.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定反距离和固定距离选项的截止距离。目标特征的指定截止值之外的特征将在该特征的分析中被忽略。但是，对于无差异区域，给定距离之外的要素的影响将随着距离的增加而减小，而距离阈值内的要素将同样被考虑在内。输入的距离值应与输出坐标系的距离值匹配。</para>
        ///   <para>对于空间关系的反距离概念化，值为 0 表示不会应用阈值距离;当此参数留空时，将计算并应用默认阈值。默认值为欧几里得距离，可确保每个要素至少有一个相邻要素。</para>
        ///   <para>当选择“从文件空间概念化获取空间权重”时，此参数不起作用。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Distance Band or Threshold Distance")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public double? _Distance_Band_or_Threshold_Distance { get; set; } = null;


        /// <summary>
        /// <para>Self Potential Field</para>
        /// <para>The field representing self potential: the distance or weight between a feature and itself.</para>
        /// <para>表示自我电位的场：特征与自身之间的距离或权重。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Self Potential Field")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _Self_Potential_Field { get; set; } = null;


        /// <summary>
        /// <para>Weights Matrix File</para>
        /// <para>The path to a file containing weights that define spatial, and potentially temporal, relationships among features.</para>
        /// <para>包含权重的文件的路径，这些权重用于定义要素之间的空间关系和潜在的时间关系。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Weights Matrix File")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _Weights_Matrix_File { get; set; } = null;


        /// <summary>
        /// <para>Apply False Discovery Rate (FDR) Correction</para>
        /// <para><xdoc>
        ///   <para>Specifies whether statistical significance will be assessed with or without FDR correction.</para>
        ///   <bulletList>
        ///     <bullet_item>Checked—Statistical significance will be based on the FDR correction.</bullet_item><para/>
        ///     <bullet_item>Unchecked—Statistical significance will not be based on the FDR correction; it will be based on the p-value and z-score fields. This is the default.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否在有或没有 FDR 校正的情况下评估统计显著性。</para>
        ///   <bulletList>
        ///     <bullet_item>选中 - 统计显著性将基于 FDR 校正。</bullet_item><para/>
        ///     <bullet_item>未选中 - 统计显著性将不基于 FDR 校正;它将基于 p 值和 z 分数字段。这是默认设置。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Apply False Discovery Rate (FDR) Correction")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _Apply_False_Discovery_Rate__FDR__Correction_value _Apply_False_Discovery_Rate__FDR__Correction { get; set; } = _Apply_False_Discovery_Rate__FDR__Correction_value._false;

        public enum _Apply_False_Discovery_Rate__FDR__Correction_value
        {
            /// <summary>
            /// <para>APPLY_FDR</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("APPLY_FDR")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_FDR</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_FDR")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Results Field</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Results Field")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _Results_Field { get; set; }


        /// <summary>
        /// <para>Probability Field</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Probability Field")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _Probability_Field { get; set; }


        /// <summary>
        /// <para>Source_ID</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Source_ID")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _Source_ID { get; set; }


        /// <summary>
        /// <para>Number of Neighbors</para>
        /// <para>An integer specifying the number of neighbors to include in the analysis.</para>
        /// <para>一个整数，指定要包含在分析中的相邻节点数。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Number of Neighbors")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public long? _number_of_neighbors { get; set; } = null;


        public HotSpots SetEnv(object MResolution = null, object MTolerance = null, object XYResolution = null, object XYTolerance = null, object ZResolution = null, object ZTolerance = null, object geographicTransformations = null, object outputCoordinateSystem = null, object outputMFlag = null, object outputZFlag = null, object outputZValue = null, bool? qualifiedFieldNames = null, object scratchWorkspace = null, object workspace = null)
        {
            base.SetEnv(MResolution: MResolution, MTolerance: MTolerance, XYResolution: XYResolution, XYTolerance: XYTolerance, ZResolution: ZResolution, ZTolerance: ZTolerance, geographicTransformations: geographicTransformations, outputCoordinateSystem: outputCoordinateSystem, outputMFlag: outputMFlag, outputZFlag: outputZFlag, outputZValue: outputZValue, qualifiedFieldNames: qualifiedFieldNames, scratchWorkspace: scratchWorkspace, workspace: workspace);
            return this;
        }

    }

}